home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / MACSHELL / MS1 / COMMANDS / ENVIRON.C < prev    next >
Text File  |  1992-12-02  |  6KB  |  194 lines

  1. /*
  2.  *    MacShell Source File
  3.  *
  4.  *    Copyright (c) 1989, 1990, 1991, 1992  Suick Bay Technologies.  All rights reserved.
  5.  *
  6.  *
  7.  *    RESTRICTIONS ON MacShell program and source code.
  8.  *
  9.  *    Ñ╩MacShell¬ is a product of Suick Bay Technologies and is provided for
  10.  *    restricted use by the owner of the CDROM "Disk to the future II".
  11.  *
  12.  *    Ñ╩No permission is granted for any commercial use without the written
  13.  *    consent of the Suick Bay Technologies.
  14.  *
  15.  *    Ñ╩No permission is granted for any redistribution of any kind use without
  16.  *    the written consent of the Suick Bay Technologies.
  17.  *
  18.  *    Ñ╩Permission is granted to use this for any personal noncommercial use.
  19.  *
  20.  *    Ñ╩You may not distribute source or executable code at all, nor may you 
  21.  *    distribute it with or within a commercial product without the written
  22.  *    consent of the Suick Bay Technologies.  Please send modifications to 
  23.  *    the author for inclusion in updates to the program.  Thanks.
  24.  *
  25.  *
  26.  *    MacShell¬ IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  27.  *    WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  28.  *    PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  29.  *
  30.  *    SUICK BAY TECHNOLOGIES SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  31.  *    INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY MACSHELL
  32.  *    OR ANY PART THEREOF. 
  33.  *
  34.  *    In no event will Suick Bay Technologies be liable for any lost revenue
  35.  *    or profits or other special, indirect and consequential damages, even if
  36.  *    Suick Bay Technologies has been advised of the possibility of such damages.
  37.  *
  38.  *    Suick Bay Technologies can be reached at:
  39.  *    
  40.  *    8768 Cottonwood lane
  41.  *    Maple Grove, MN 55369
  42.  *    Voice: (612) 425-7025
  43.  *    AppleLink: D5233
  44.  *    
  45.  *    Mpls, MN 55429
  46.  *
  47.  *    No parts of this software may be reproduced or stored in a
  48.  *    retrieval system or transmitted in any form, or any means,
  49.  *    electronic, mechanical, photocopying, recording or otherwise,
  50.  *    without the prior written permission of Suick Bay Technologies.
  51.  *    
  52.  *    Spread the word and not the disk.
  53.  *    
  54.  *    SPK 012290    :    Initial
  55.  */
  56.  
  57. #include    "SystemPub.h"
  58. #include    "Proc.h"
  59. #include    "ShellPub.h"
  60. #include    "Path.h"
  61.  
  62. #define        BUFSIZE        256
  63.  
  64. /*******************************************************************/
  65.  
  66. void        DumpEnvirons( WHandle ShellWh, int16 ProcID  )
  67. {
  68. OSErr        result;
  69. SysEnvRec    sysRec;
  70. char        *str;
  71.  
  72.     result = SysEnvirons( 2, &sysRec );
  73.  
  74.     procPrintf( ShellWh, ProcID, "    Version ........ %d\n", sysRec.environsVersion );
  75.  
  76.     if( result )
  77.         {
  78.         procPrintf( ShellWh, ProcID, "SysEnvirons Error %d\n", result );
  79.         return;
  80.         }
  81.         
  82.     switch( sysRec.machineType )
  83.         {
  84.         case    envXL        :    str = "XL";            break;
  85.         case    envMac        :    str = "Mac";        break;
  86.         case    envMachUnknown    :    str = "Unknown";break;
  87.         case    env512KE    :    str = "512KE";        break;
  88.         case    envMacPlus    :    str = "MacPlus";    break;
  89.         case    envSE        :    str = "SE";            break;
  90.         case    envMacII    :    str = "MacII";        break;
  91.         case    envMacIIx    :    str = "MacIIx";        break;
  92.         case    envMacIIcx    :    str = "envMacIIcx";    break;
  93.         case    envSE30        :    str = "SE30";        break;
  94.         case    envPortable    :    str = "Portable";    break;
  95.         case    envMacIIci    :    str = "MacIIci";    break;
  96.         default :
  97.             str = "A new Mac, holy cow !\n";
  98.             break;
  99.         }
  100.         
  101.     procPrintf( ShellWh, ProcID, "    machineType .... %s\n", str );
  102.     procPrintf( ShellWh, ProcID, "    systemVersion ..$%X\n", sysRec.systemVersion );
  103.  
  104.     switch( sysRec.processor )
  105.         {
  106.         case    envCPUUnknown    :    str = "CPUUnknown";        break;
  107.         case    env68000    :    str = "68000";        break;
  108.         case    env68010    :    str = "68010";        break;
  109.         case    env68020    :    str = "68020";        break;
  110.         case    env68030    :    str = "68030";        break;
  111.         default :
  112.             str = "A new Chip, holy motorolas !\n";
  113.             break;
  114.         }
  115.     
  116.     procPrintf( ShellWh, ProcID, "    processor ...... %s\n", str );
  117.     procPrintf( ShellWh, ProcID, "    hasFPU ......... %d\n", sysRec.hasFPU );
  118.     procPrintf( ShellWh, ProcID, "    hasColorQD ..... %d\n", sysRec.hasColorQD );
  119.     
  120.     switch( sysRec.keyBoardType )
  121.         {
  122.         case    envUnknownKbd    :    str = "envUnknownKbd";        break;
  123.         case    envMacKbd        :    str = "envMacKbd";        break;
  124.         case    envMacAndPad    :    str = "envMacAndPad";        break;
  125.         case    envMacPlusKbd    :    str = "envMacPlusKbd";        break;
  126.         case    envAExtendKbd    :    str = "envAExtendKbd";        break;
  127.         case    envStandADBKbd    :    str = "envStandADBKbd";        break;
  128.         default :
  129.             str = "A new Keyboard, holy fat fingers batman !\n";
  130.             break;
  131.         }
  132.  
  133.     procPrintf( ShellWh, ProcID, "    keyBoardType ... %s\n", str );
  134.     procPrintf( ShellWh, ProcID, "    atDrvrVersNum .. %d\n", sysRec.atDrvrVersNum );
  135.     procPrintf( ShellWh, ProcID, "    sysVRefNum ..... %d (Hex %X)\n",
  136.         sysRec.sysVRefNum, sysRec.sysVRefNum );
  137. }
  138.  
  139. /*******************************************************************/
  140.  
  141. Boolean            DoENVIRON( int16 ProcToken, WHandle ShellWh, int16 ProcID, char *string )
  142. {
  143. int16            i, argc;
  144. char            *cp, argument[ 256 ];
  145. ShellWindRec    **MyShell = (ShellWindRec **) (**ShellWh).thing;
  146.  
  147.     switch( ProcToken )
  148.         {
  149.         case    PROC_INIT    :
  150.             (**MyShell).Proc[ ProcID ].flags = TRUE;
  151.             break;
  152.             
  153.         case    PROC_TERM    :
  154.         case    PROC_BREAK    :
  155.             /* Tell the shell that we're done */
  156.             SendOutToken( ShellWh, ProcID, PROC_BREAK );
  157.             /* Turn ourself off */
  158.             (**MyShell).Proc[ ProcID ].ProcActive = FALSE;
  159.             break;
  160.             
  161.         case    PROC_STDIN    :
  162.             if( (**MyShell).Proc[ ProcID ].flags )
  163.                 {
  164.                 (**MyShell).Proc[ ProcID ].flags = FALSE;        
  165.  
  166.                 /* get arguments */
  167.                 argc = (**MyShell).Proc[ ProcID ].argc;
  168.                 for( i = 1; i < argc; i++ )
  169.                     {
  170.                     GetArgv( ShellWh, ProcID, i, argument );
  171.                     cp = argument;
  172.         
  173.                     if( *cp++ == '-' )
  174.                         while( *cp )
  175.                             switch( *cp++ )
  176.                                 {
  177.                                 case    'x'    :    /* option x */
  178.                                     break;
  179.                                 }
  180.                     }
  181.                     
  182.                 DumpEnvirons( ShellWh, ProcID );
  183.  
  184.                 /* Tell the shell that we're done */
  185.                 SendOutToken(  ShellWh, ProcID, PROC_BREAK );
  186.                 
  187.                 /* Turn ourself off */
  188.                 (**MyShell).Proc[ ProcID ].ProcActive = FALSE;
  189.                 return( FALSE );
  190.                 }
  191.         }
  192. }
  193.  
  194.